﻿#ifndef MAINCONTROLLER_H
#define MAINCONTROLLER_H
#include"StashManageControllerObject.h"
#include"MainView.h"
class InventoryView;
class ProductView;
//主窗口控制器
class MainController :public StashManageControllerObject
{
	Q_OBJECT
public:
	MainController(QObject* parent = nullptr);
public:
	MainView* view();
	void login(const XQUserData& user);
	void logout();

	void setModel(StashManageModelObject* model)override;
	void copyModel(StashManageModelObject* model)override;
signals://信号
	void requestLoginSignals();
	void addUserResultSignals(const XQUserData& user,bool ok);
protected://
	void modifyUserInfoSlots(const XQUserData& user);
	void modifyPasswordSlots(const XQUserData& user);
	void modifyUserManagementSlots(const XQUserData& user);
	void addUserManagementSlots(const XQUserData& user);
	void removeUserManagementSlots(const XQUserData& user);
protected://
	void addProductSlots(const ProductModel& product);
	void addProductCreateSlots(ProductView* view);
	void modifyProductSlots(const ProductModel& product);
	void modifyProductCreateSlots(ProductView* view);
	void removeProductSlots(const ProductModel& product);
	void buyProductSlots(const ProductModel& product);
	void buyProductCreateSlots(ProductView* view);
protected://
	void addInventorySlots(const InventoryModel& inventory);
	void addInventoryCreateSlots(InventoryView* view);
	void modifyInventorySlots(const InventoryModel& inventory);
	void removeInventorySlots(const InventoryModel& inventory);
protected://隐藏的函数
	//初始化
	void init();
	void init_catalogue();
	void init_login();
	void init_openUserInfo();
	void init_openModifyPassword();
	void init_openUserManagement();
	void init_openProductManagement();
	void init_openInventoryManagement();
	void init_openOrderManagement();
private:
	QPointer<MainView> m_mainView;
};
#endif